package com.mmy.dao.scenic;

import java.util.List;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.mmy.domain.scenic.TScenicBase;

public interface TScenicBaseRepository extends JpaRepository<TScenicBase, Integer> {

	/**
	 * 获取最大值ID
	 * 
	 * @return 返回值说明 最大ID
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.17
	 */
	@Query(value = "SELECT MAX(iScenicID) FROM tScenicBase WHERE LEFT(iScenicID,2) = RIGHT(YEAR(NOW()),2)", nativeQuery = true)
	Object getMaxScenicID();

	/**
	 * 创建景区信息
	 * 
	 * @author 创建人hanxl
	 * @date 创建日期 2020.12.24
	 */
	@Transactional
	@Modifying
	@Query(value = "INSERT INTO tScenicBase(iScenicID, cScenicName, cRate, iZoneID, cContact, cTel, cAddress, cIntro, cImgPath, dCreateDate, cCreator, dModifyDate, cReviser, cMemo, cSpare1, cSpare2, cSpare3, cSpare4, cSpare5) VALUES (:iScenicID, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)", nativeQuery = true)
	void save(@Param("iScenicID") int iScenicID);

	/**
	 * 删除景区信息
	 * 
	 * @author 创建人hanxl
	 * @date 创建日期 2020.12.24
	 */
	@Transactional
	@Modifying
	@Query(value = "delete from tScenicBase where tScenicBase.iScenicID in (:lstScenicID)", nativeQuery = true)
	void delScenicBase(@Param("lstScenicID") List<Integer> lstScenicID);

	/*
	 * 根据id查找
	 */
	@Query(value = "select *  from tScenicBase where iScenicID = :iScenicID", nativeQuery = true)
	TScenicBase findByScenicID(@Param("iScenicID") int iScenicID);

	/**
	 * 创建时查重需要 查询景区名称和区域是否相同
	 * 
	 * @return 返回值说明
	 * @author 创建人hanxl
	 * @date 创建日期 2020.12.24
	 */
	@Query(value = "select *  from tScenicBase where cScenicName = :strScenicName and iZoneID=:iZoneID", nativeQuery = true)
	List<TScenicBase> findByScenicName(@Param("strScenicName") String strScenicName, @Param("iZoneID") int iZoneID);

	/**
	 * 修改时查重需要 查询景区名称和区域是否相同
	 * 
	 * @return 返回值说明
	 * @author 创建人hanxl
	 * @date 创建日期 2020.12.24
	 */
	@Query(value = "select *  from tScenicBase where cScenicName = :strScenicName and iZoneID=:iZoneID and iScenicID!=:iScenicID", nativeQuery = true)
	List<TScenicBase> findByScenicNameAndZoneID(@Param("strScenicName") String strScenicName,
			@Param("iZoneID") int iZoneID, @Param("iScenicID") int iScenicID);

}
